Алгоритм обратного распространения ошибки
Начальные веса
Первая строка - веса к элементу 1, вторая к 2. Последние элементы это смещение
> |
W:=Matrix([[1,0.5,1],[-1,2,1]]):
|
Веса второго слоя (в конце смещение)
> |
W2:=Vector(row,[1.5,-1,1]):
|
Входной сигнал( последний элемент относится к смещению, всегда=1)
20 циклов для обучения сети
> |
U3:=convert(<map(x->1/(1+exp(-x)),U2),1>,Vector);
|
Сигмоид(функция активации)
> |
u5:=map(x->1/(1+exp(-x)),W3);
|
Ошибка выхода(цель=1)
> |
delta[0]:=(1-u5)*u5*(1-u5);
|
Ошибки промежуточного слоя
> |
delta[4]:=delta[0]*W2[2]*U3[2]*(1-U3[2]);
|
> |
delta[3]:=delta[0]*W2[1]*U3[1]*(1-U3[1]);
|
Коэффициент обучения
Исправляем веса (обучение)
> |
for i to 3 do W2[i]:=W2[i]+ro*delta[0]*U3[i];od;
|
> |
W[i,j]:=W[i,j]+ro*delta[i+2]*Uin[j];
|
|